package com.abiao.shop.util;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * @Description: MD5Util    MD5工具类
 * 老师补充：MD5消息摘要算法，属Hash算法一类。MD5算法对输入任意长度的消息进行运行，产生一个128位的消息摘要(32位的数字字母混合码)。
 * 主要用途：防止篡改，隐藏明文，数字签名
 * @Author: AB
 * @Date: 2021-07-02
 * @Version:v1.0
 */
public class MD5Util {

    public static String md5(String src){
        return DigestUtils.md5Hex(src);
    }

    public static final String salt = "ABsalt";

    /**
     * 用户输入密码与固定salt拼接，用作传输
     * @param inputPass
     * @return
     */
    public static String inputPassFormPass(String inputPass){
        //salt与密码拼接
       String str = "" + salt.charAt(0) + salt.charAt(1) + inputPass + salt.charAt(2);
       return md5(str);
    }

    /**
     * 传输得到的密码与随机salt拼接，用于存入数据库
     * @param formPass
     * @param salt
     * @return
     */
    public static String formPassToDBPass(String formPass, String salt){
        //salt与密码拼接
        String str = "" + salt.charAt(0) + salt.charAt(1) + formPass + salt.charAt(2);
        return md5(str);
    }

    /**
     * 将用户输入的明文密码转化成数据库的密码
     * @param inputPass
     * @param saltDB
     * @return
     */
    public static String inputPassToDBPass(String inputPass, String saltDB){
        String formPass = inputPassFormPass(inputPass);
        String DBPass = formPassToDBPass(formPass,saltDB);
        return DBPass;
    }
}
